package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * @author ：Dsi
 * @date ：2021/11/18 14:06
 * Describe ：该类用于测试ArrayList集合的
 */
public class TestArrayList {
    public static void main(String[] args) {
        ArrayList<Integer> ai=new ArrayList<>();
        ai.add(100);
        ai.add(200);
        ai.add(300);
        ai.add(400);
        ai.add(500);
        /**1.List接口的实现类
         * 2.底层数据结构是数组，内存空间是连续的
         * 3.元素有下标，有序，允许存放重复的元素
         * 4.通常可以根据下标存放元素
         * 5.增删操作慢（需要新建一个集合），查询操作快（算出元素地址值，直接按地址读取）*/
        System.out.println(ai);

        System.out.println(ai.contains(100D));
        System.out.println(ai.get(0));
        System.out.println(ai.indexOf(400));
        System.out.println(ai.lastIndexOf(400));
//        System.out.println(ai.remove(300));//会报错，remove方法有重载，此处传入的是int类型
        System.out.println(ai.remove(Integer.valueOf(300)));//此处传入的是Integer类型
        System.out.println();
        System.out.println();

        Iterator<Integer> i = ai.iterator();
        while(i.hasNext()){
            System.out.println(i.next());
        }
        System.out.println("______");
        ListIterator<Integer> i2 = ai.listIterator();
        while (i2.hasNext()){
            if (!(i2.hasNext())){
                while (i2.hasPrevious()){
                    System.out.println(i2.previous());
                }
            }
        }
        System.out.println("______");
        for (Integer a:ai
             ) {
            System.out.println(a);
        }
    }
}
